
public class question_19 {
}
//class ListNode {
//    int val;
//    ListNode next;
//
//    ListNode() {
//    }
//
//    ListNode(int val) {
//        this.val = val;
//    }
//
//    ListNode(int val, ListNode next) {
//        this.val = val;
//        this.next = next;
//    }
//}
//这道题是删除链表的倒数指针，要求只遍历一次链表，我的思路是采用距离指针的方式（双指针）
class Solution_19 {
//    public ListNode removeNthFromEnd(ListNode head, int n) {
////        特殊例子：长度为一
//        if(head.next==null){
//            return null;
//        }
////        先记录头结点
//        ListNode result=head;
//        ListNode l=head;
//        ListNode r=head;
////        先让右边的节点先走n步
//        for (int i = 0; i < n; i++) {
//            r=r.next;
//        }
////        头结点就是要删除的节点
//        if(r==null){
//            return result.next;
//        }
////        此时他们的位置已经拉开了，l指向的是倒数n个节点的前一位，方便删除，因为链表不能回头
//        while (r.next!=null){
//            l=l.next;
//            r=r.next;
//        }
////        这一步说明r已经是最后一位了，l是要删除的节点的前一位
//        l.next=l.next.next;
//        return result;
//    }
}



